{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-22T06:51:05.545809Z",
     "start_time": "2017-10-22T06:51:05.368968Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "# some_file.py\n",
    "import sys\n",
    "sys.path.insert(0, '../src/easyesn/')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-22T06:51:07.131948Z",
     "start_time": "2017-10-22T06:51:05.709151Z"
    },
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using Numpy backend.\n"
     ]
    }
   ],
   "source": [
    "from easyesn.optimizers import GradientOptimizer\n",
    "from easyesn import PredictionESN\n",
    "from easyesn.optimizers import GridSearchOptimizer\n",
    "from easyesn import helper as hlp\n",
    "import matplotlib.pyplot as plt\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-22T06:51:07.292709Z",
     "start_time": "2017-10-22T06:51:07.283199Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "inputLength = 1000\n",
    "trainingLength = int(inputLength*0.7)\n",
    "data = np.linspace(0, 4*np.pi, inputLength).reshape(-1,1)\n",
    "\n",
    "inputData = np.sin(data)\n",
    "outputData = np.cos(data)\n",
    "\n",
    "inputDataTraining = inputData[:trainingLength]\n",
    "inputDataValidation = inputData[trainingLength:]\n",
    "\n",
    "outputDataTraining = outputData[:trainingLength]\n",
    "outputDataValidation = outputData[trainingLength:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-22T06:51:10.789019Z",
     "start_time": "2017-10-22T06:51:10.768002Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "esn = PredictionESN(n_input=1, n_output=1, n_reservoir=50, leakingRate=0.2, spectralRadius=0.2, regressionParameters=[1e-2], solver=\"lsqr\", feedback=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## GradientOptimizer - Prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-21T22:32:04.118810Z",
     "start_time": "2017-10-21T22:32:04.112307Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "opt = GradientOptimizer(esn, learningRate=0.001)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-21T13:38:45.166112Z",
     "start_time": "2017-10-21T13:37:55.363143Z"
    },
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100% (150 of 150) |#######################| Elapsed Time: 0:00:30 Time: 0:00:30\n"
     ]
    }
   ],
   "source": [
    "validationLosses, fitLosses, inputScalings, spectralRadiuses, leakingRates, learningRates = opt.optimizeParameterForTrainError(inputDataTraining, outputDataTraining, inputDataValidation, outputDataValidation, epochs=150, transientTime=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-21T13:38:49.083759Z",
     "start_time": "2017-10-21T13:38:48.375341Z"
    },
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f1260d85f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f11e3150f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n+Dk9OFYL4C1gvLt/WslxSRwqLA7zP39fxmMf5tOwbh0euCydK0JaK0Ik3pUbFO5ebGY3AbOAJOA5\nd88zsxuD558C7gBaA08Ef+mL3T10uL7BoScCU8xsNLAKuCLYfxNwAnCHmd0R7Dvf3f91xiGJ56tv\ntjLh1VwWb9jJ0Ixk7rwojXbHaK0IkURg7ol/1SYUCnlWVlasy5BD2LW/mIfeWcSLn6/i2GYNuWdY\nb85NO9TnFkTkaDOzee4eKq+dPn8o1ea9BRu4Y/p81u/Yx6j+nbnlgh401UdeRRKO/tZKlYv8yGuP\n9scwaeQpnKKPvIokLAWFVJlw2Hl57jdMfHuRPvIqUoMoKKRK5BfsZEJmLnNXbqV/19bcd2k6Xdo0\niXVZIlIFFBRyRA6e5fXBERlcfqom8BOpSRQUUmlfrtjChMwclm3czfCTOnDbhWmawE+kBlJQSIVt\n31vExLcX8fKX35DSshEvXN+Xgd3bxrosEakmCgqJmrszM3c9d72Rx+Zd+xkzoCu/Orcbjevr10ik\nJtPfcInKmq17uGN6Hh8sKiC9Y3Oev+40endsHuuyROQoUFBImYpLwvxlzkoefq90Cq/bhvbkujM6\nU1cfeRWpNRQUcljz125nQmYuuWu3c86J7bh7WC9SWjaOdVkicpQpKOQ/7Cks5k/vL+XZT1bQsnF9\nHrvqZC7MSNZHXkVqKQWFfMeHiwu47bX5rN22l6v6dmL84J40b1wv1mWJSAwpKASAjTv3c/ebC3gj\n+1tOaNeUKTf0p2+XVrEuS0TigIKiljuwJOn9MxeyryjMr87txk8HHU+DukmxLk1E4oSCohaLnJ+p\nX5dW3HdpOsdrSVIROYiCohbaV1TCEx8t48mP8mlcvy4PXpbB5SHNzyQih6agqGXmLNvEba/NZ/km\nzc8kItFRUNQSW3cXct/MhUydt4bUVo15aXRfzuqm+ZlEpHwKihrO3Xntn2v5/VsL2bG3iJ8OOp5f\nntONRvV1s1pEoqOgqMFWbNrNba/n8mn+Zk5ObcH9l6Zz4rHNYl2WiCQYBUUNVFgcZvI/lvHnD/Jp\nkFSHe4b3ZmTfVOrU0c1qEak4BUUNM3flFiZk5pJfsIuh6cnceVEa7Zo1jHVZIpLAopoC1MwGm9li\nM8s3s/GHeH6kmeWYWa6ZzTGzPuX1NbNWZvaemS0NfrYM9rc2sw/NbJeZPV4Vg6wNtu8pYkJmDpc/\n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\nTPnbknnk2AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f12627ba58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f1260c9320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f126358d30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(fitLosses)\n",
    "plt.show()\n",
    "plt.plot(spectralRadiuses)\n",
    "plt.show()\n",
    "plt.plot(leakingRates)\n",
    "plt.show()\n",
    "plt.plot(inputScalings)\n",
    "plt.show()\n",
    "plt.plot(learningRates)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## GradientOptimization - Generation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-22T07:06:20.963697Z",
     "start_time": "2017-10-22T07:06:20.954689Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "esn = PredictionESN(n_input=0, n_output=1, n_reservoir=50, regressionParameters=[1e-2], solver=\"lsqr\", feedback=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-22T07:06:24.414700Z",
     "start_time": "2017-10-22T07:06:24.409697Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "opt = GradientOptimizer(esn, learningRate=0.001)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-10-22T07:06:27.974931Z",
     "start_time": "2017-10-22T07:06:27.894270Z"
    },
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'NoneType' object has no attribute 'shape'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-11-5b4107adef09>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mvalidationLosses\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfitLosses\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mspectralRadiuses\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mleakingRates\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minputScalings\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptimizeParameterForGenerativeValidationError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moutputDataTraining\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moutputDataValidation\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m150\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtransientTime\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32mC:\\Users\\Roland\\Source\\Repos\\reservoir-computing\\src\\easyesn\\easyesn\\optimizers\\GradientOptimizer.py\u001b[0m in \u001b[0;36moptimizeParameterForGenerativeValidationError\u001b[0;34m(self, trainingInputData, trainingOutputData, validationOutputData, epochs, transientTime, verbose)\u001b[0m\n\u001b[1;32m    578\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    579\u001b[0m         \u001b[1;31m# calculate stuff\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m--> 580\u001b[0;31m         \u001b[0mtrainLength\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtrainingInputData\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    581\u001b[0m         \u001b[0moptimizationLength\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvalidationOutputData\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    582\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mtransientTime\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'shape'"
     ]
    }
   ],
   "source": [
    "validationLosses, fitLosses, spectralRadiuses, leakingRates, inputScalings = opt.optimizeParameterForGenerativeValidationError(None, outputDataTraining, outputDataValidation, epochs=150, transientTime=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plt.plot(fitLosses)\n",
    "plt.show()\n",
    "plt.plot(spectralRadiuses)\n",
    "plt.show()\n",
    "plt.plot(leakingRates)\n",
    "plt.show()\n",
    "plt.plot(inputScalings)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
